﻿// ## 2023/11/03 # 黑店小小二 # 修复无百出特技时没走兵力判断 ##
// ## 2023/09/28 # 氕氘氚 # 去除多余的判定 ##
// ## 2023/04/28 # 江东新风 # 取消特技转特效 ##
// ## 2021/10/03 # 江东新风 # 因兵力少而达到的气力增加上限为当前部队的最大气力 ##
// ## 2021/10/01 # 江东新风 # namespace的韩文改成英文 ##
// ## 2020/09/17 #江东新风#删除重复常量##
// ## 2020/08/16 #江东新风#has_skill函数替換##
// ## 2020/07/26 ##
namespace STRATEGY_ENERGY_COST
{

    class Main
    {

        Main()
        {
            pk::set_func(205, pk::func205_t(callback));
        }

        int callback(pk::unit@ src, int strategy_id)
        {
            /* 원본 기력 소모량 (백출)
            if (ch::has_skill(src, 特技_百出))
                return 1;
            */

            // 특기 소비 기력
            int n = 0;
            switch (strategy_id)
            {
            case 计略_火计:
                n = 计略耗气_火计;
                break;
            case 计略_灭火:
                n = 计略耗气_灭火;
                break;
            case 计略_伪报:
                n = 计略耗气_伪报;
                break;
            case 计略_扰乱:
                n = 计略耗气_扰乱;
                break;
            case 计略_镇静:
                n = 计略耗气_镇静;
                break;
            case 计略_伏兵:
                n = 计略耗气_伏兵;
                break;
            case 计略_内讧:
                n = 计略耗气_内讧; // 원본 기력 소모량 (20)
                break;
            case 计略_妖术:
                n = 计略耗气_妖术; // 원본 기력 소모량 (50) 
                break;
            case 计略_落雷:
                n = 计略耗气_落雷; // 원본 기력 소모량 (50) 
                break;
            }

            //---------------------------------------------------------------------------------------
            //기력 소모량 감소 효과 ('18.10.4)
            //考虑到特效可自定义性，就不给规则，直接设定
            //if (ch::has_skill(src, 特效_减计策耗气大)) n = n * 减计策耗气大 / 100;
            //if (ch::has_skill(src, 特效_减计策耗气小)) n = n * 减计策耗气小 / 100;
            if (ch::has_skill(src,特技_百出))
            {

                int 百出耗气规则 = pk::core::skill_constant_value(特技_百出, 0);

                if (百出耗气规则 == 2)
                {
                    // 自定义气力消耗
                    switch (strategy_id)
                    {
                    case 计略_火计:
                        n = 百出耗气_火计; break;
                    case 计略_灭火:
                        n = 百出耗气_灭火; break;
                    case 计略_伪报:
                        n = 百出耗气_伪报; break;
                    case 计略_扰乱:
                        n = 百出耗气_扰乱; break;
                    case 计略_镇静:
                        n = 百出耗气_镇静; break;
                    case 计略_伏兵:
                        n = 百出耗气_伏兵; break;
                    case 计略_内讧:
                        n = 百出耗气_内讧; break;
                    case 计略_妖术:
                        n = 百出耗气_妖术; break;
                    case 计略_落雷:
                        n = 百出耗气_落雷; break;
                    }

                    
                    //if (兵力影响耗气)
                    //{
                    //    int max_energy = ch::get_max_energy(src.has_tech(技巧_熟练兵));//是否有必要？或者直接变成100？
                    //    if (src.troops <= 2000)
                    //        n = int(pk::min(n * pk::min(10.f, 2000.f / pk::max(1, src.troops)), float(max_energy)));         // 최대 10배 소모
                    //    else if (src.troops >= 10000)
                    //        n = int(n * pk::max(0.5f, (2 - src.troops / 10000.f)));    // 최소 50% 소모
                    //}
                }
                n = batt::get_strtegy_energy_cost(src, n, true);
            }
            else
            {
                n = batt::get_strtegy_energy_cost(src, n, false);
            }

            //---------------------------------------------------------------------------------------
            //병력수에 따른 기력 소모량 차등 - 소부대 기력 소모 증가, 대부대 기력 소모 감소 ('18.10.11)


            n = pk::max(1, n);  //至少消耗1点

            return n;
        }
    }

    Main main;
}